<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Make Controller Kit - Firmware API: Make Controller Kit - Firmware API</title>
<link href="mt_doxygen.css" rel="stylesheet" type="text/css" />
<link href="../resources/mt_doxytabs.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.header {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 12pt;
	color: #222222;
}
-->
</style>
</head>

<body>
<table width="800" border="0">
    <tr>
      <td colspan="3">
        <form method="get" action="http://www.google.com/search">
          <div align="right">
            <input type="text"   name="q" size="25"
              maxlength="255" value="" />
            <input type="submit" value="Search" />
            <input type="hidden" name="sitesearch" value="makingthings.com/ref/firmware/html" />
          </div>
        </form>
       </td>
    </tr>
    <tr>
      <td><div align="center"><a href="http://www.makingthings.com">
				<img src="../resources/logo_brown_medium.png" alt="MakingThings"
									width="200" height="78" border="0" align="middle" longdesc="http://www.makingthings.com" /></a></div></td>
				<td><div align="center" class="header">
      		Make Controller Kit <br />
          Firmware API
      </div></td>
      <td><div align="center"><a href="http://www.makezine.com">
					<img src="../resources/make_logo.png" alt="MAKE Zine" 
										width="164" height="73" border="0" align="middle" longdesc="http://www.makezine.com" /></a></div></td>
    </tr>
</table>
</body>
</html>
<!-- Generated by Doxygen 1.5.4 -->
<script type="text/javascript">
<!--
function changeDisplayState (e){
  var num=this.id.replace(/[^[0-9]/g,'');
  var button=this.firstChild;
  var sectionDiv=document.getElementById('dynsection'+num);
  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
    sectionDiv.style.display='block';
    button.src='open.gif';
  }else{
    sectionDiv.style.display='none';
    button.src='closed.gif';
  }
}
function initDynSections(){
  var divs=document.getElementsByTagName('div');
  var sectionCounter=1;
  for(var i=0;i<divs.length-1;i++){
    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
      var header=divs[i];
      var section=divs[i+1];
      var button=header.firstChild;
      if (button!='IMG'){
        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
        button=document.createElement('img');
        divs[i].insertBefore(button,divs[i].firstChild);
      }
      header.style.cursor='pointer';
      header.onclick=changeDisplayState;
      header.id='dynheader'+sectionCounter;
      button.src='closed.gif';
      section.id='dynsection'+sectionCounter;
      section.style.display='none';
      section.style.marginLeft='14px';
      sectionCounter++;
    }
  }
}
window.onload = initDynSections;
-->
</script>
<div class="tabs">
  <ul>
    <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<h1>Make Controller Kit - Firmware API</h1>
<p>
<h2><a class="anchor" name="overview">
Overview</a></h2>
The Make Controller Board is a powerful, flexible, and easy to use microcontroller, based on the Atmel ARM7 SAM7X256. It is designed to interface easily to additional circuitry in order to connect with the real world.<p>
The Make Controller Board can be plugged into into the Make Application Board which makes use of nearly all the devices on the Controller. Alternatively, it can be plugged into a piece of hardware of your creation.<p>
To jump right into browsing the API, click on <b>Modules</b> above.<h2><a class="anchor" name="soft_env">
Software Environment</a></h2>
The Make Controller Kit software environment is a fusion of four main bodies of code:<ul>
<li>User code - the applications that you, the user, create.</li><li>MakingThings library - code that MakingThings has contributed to make it easier to work with the Make Controller Kit.</li><li>FreeRTOS - an open source Real Time Operating System for the SAM7X. See <a href="http://www.freertos.org">http://www.freertos.org</a></li><li>lwIP - a complete and open source TCIP/IP code library. See <a href="http://www.sics.se/~adam/lwip/">http://www.sics.se/~adam/lwip/</a></li></ul>
<p>
To ensure that the software environment for the Controller is consistent, regardless of the interface hardware, the code for the Controller Board has been kept separate from the code for the Application Board to make this as easy as possible:<ul>
<li>The <a class="el" href="group___controller.html">Controller</a> module provides the core routines required for the Make Controller Board.</li><li>The <a class="el" href="group___app_board.html">AppBoard</a> module provides routines that work with the Make Application Board, and are often based on or use code from the ControllerBoard module.</li><li>The <a class="el" href="group___o_s_c.html">OSC</a> module provides a communication interface to the Make Controller Kit from other computers and devices.</li></ul>
<p>
Software for the Make Controller Kit is open source, and thus subject to the licensing of each module of code. Be sure to acquaint yourself with the licenses for the main bodies of code in the Make Controller firmware codebase:<ul>
<li>MakingThings: <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a></li><li>FreeRTOS: <a href="http://www.freertos.org/a00114.html">http://www.freertos.org/a00114.html</a></li><li>lwIP: <a href="http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5">http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5</a></li></ul>
<h2><a class="anchor" name="Tools">
Tools</a></h2>
The firmware for the Make Controller Kit can be built using the freely available ARM-flavored version of the GCC compiler, <b>arm-elf-gcc</b>. Many toolchains are available - OS X and Windows versions can be found on the MakingThings downloads page: <a href="http://www.makingthings.com/resources/downloads">http://www.makingthings.com/resources/downloads</a> Other good options include:<ul>
<li>GNU-ARM: <a href="http://www.gnuarm.com">http://www.gnuarm.com</a></li><li>WinARM (Windows-only): <a href="http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/#winarm">http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/#winarm</a></li><li>YAGARTO (Windows-only): <a href="http://www.yagarto.de">http://www.yagarto.de</a></li></ul>
<p>
To upload new firmware to your Make Controller, you have a few options:<ul>
<li>Use <b>mchelper</b>, Make Controller Helper, an app from MakingThings: <a href="http://www.makingthings.com/resources/downloads">http://www.makingthings.com/resources/downloads</a></li><li>Use <b>sam7utils</b>, a command line app: <a href="http://oss.tekno.us/sam7utils">http://oss.tekno.us/sam7utils</a></li><li>Use a JTAG device.</li></ul>
<p>
Rowley also provides a very good IDE for ARM7 projects called <b>CrossWorks</b>, which supports in-circuit debugging. There are single user licenses available. Check <a href="http://www.rowley.co.uk/arm/index.htm">http://www.rowley.co.uk/arm/index.htm</a><h2><a class="anchor" name="Community">
Community</a></h2>
As you begin to create projects with the Make Controller, please consider contributing any potentially helpful material you generate or come across. This could be anything from source code, to schematics, to instructions on how to interface with a particular device.<p>
The best places to get in touch are:<ul>
<li>MakingThings forums: <a href="http://www.makingthings.com/forum">http://www.makingthings.com/forum</a></li><li>MakingThings bug tracker &amp; development wiki: <a href="http://dev.makingthings.com">http://dev.makingthings.com</a></li><li>MakingThings IRC channel: <b>makingthings</b> on <b>irc.freenode.net</b> </li></ul>
<p>
We look forward to hearing about your projects! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Make Controller Kit</title>
<style type="text/css">
<!--
.footer {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 9pt;
	color: #999999;
}
-->
</style>
</head>

<body>
<hr size="1">
<div>
  <p class="footer">The Make Controller Kit is an open source project maintained by <a href="http://www.makingthings.com">MakingThings</a>.<br />
    MakingThings code is released under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache 2.0 license</a>.<br />
    Bug tracker, development wiki and status can be found at <a href="http://dev.makingthings.com">http://dev.makingthings.com</a>.<br />
		This document was last updated on 5 Dec 2007.
</p>
</div>
<!-- Google Analytics Code -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-769030-1";
urchinTracker();
</script>
</body>
</html>
